import junit.framework.*;


public class LiczbaTest extends TestCase {
	Liczba nA1_16 = null;
	Liczba n10_10 = null;
	Liczba n20_7 = null;
	Liczba n87 = null;
	Liczba n_dopisana = null;
	
	public void setUp(){
		try{
			nA1_16 = new Liczba("A1", 16);
			n10_10 = new Liczba("2", 10);
			n20_7 = new Liczba("20", 7);
			n87 = new Liczba(87);
			n_dopisana = new Liczba("17",10);
		}
		catch(LiczbaException ex){}
	}
	
	public final void testLiczba(){
		Liczba liczba = null;
		try{
			liczba = new Liczba("A1", 16);
		}
		catch(LiczbaException ex){
		}
		assertNotNull("Nie udalo sie stworzyc obiektu.", liczba);
		assertEquals("Konstruktor zle zapisuje dane.", "161", nA1_16.zapis10());
		assertTrue("Nie udalo sie stworzyc obiektu.", n87 != null);
		assertFalse("Konstruktor bezparametrowy zle zapisuje dane.", n87.zapis10().equals("161") == true);
	}
	
	public final void testzapis(){
		try{
			assertEquals("Metoda zapis nie dziala.", "A1", nA1_16.zapis(16));
			assertEquals("Metoda zapis nie dziala.", "10", n10_10.zapis(2));
			assertSame("Metoda zapis nie dziala.", 12, Integer.parseInt(n20_7.zapis(12)));
		}
		catch(LiczbaException ex){}
	}
	
	public final void testBaseException(){
		try{
			Liczba liczba1 = new Liczba("10", 18);
			Liczba liczba2 = new Liczba("10", 1);
			fail("Konstruktor parametryczny nie obsluguje wyjatkow z podstawa.");
		}
		catch(LiczbaException ex){ return; }
		fail("Konstruktor rzuca zlym wyjatkiem.");
	}
   
  public final void testDopisany()
  {
    try 
    {
    	assertEquals("10",n_dopisana.zapis(17));
	} 
    catch (LiczbaException e) {}
  }
}
